<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){

?>
<?php
//------------------------------------------------------------ Fonctions spécifiques à la page

// on créé la fonction permettant l'affichage des aires géographiques
function afficherOptions($tab, $lvl=0){

	global $dv_airesup; //on récupère la valeur par défaut du champ

	if(count($tab) > 0){
		foreach($tab as $value){
			if($value[0] == $dv_airesup){
				echo "<option style=\"padding-left: ".(($lvl*15)+20)."px\" value=\"".$value[0]."\" selected=\"selected\">".htmlentities($value[2], ENT_NOQUOTES, "UTF-8")."</option>";
			}else{
				echo "<option style=\"padding-left: ".(($lvl*15)+20)."px\" value=\"".$value[0]."\">".htmlentities($value[2], ENT_NOQUOTES, "UTF-8")."</option>";
			}
			if(!is_null($value[3])){
				afficherOptions($value[3], $lvl+1);
			}
		}
		unset($value);
	}else{
		echo "<option disabled=\"disabled\">Aucune aire géo. enregistrée</option>";
	}
	
}

// on créé la fonction permettant l'affichage des aires géographiques
function afficherListe($tab, $lvl=0){

	// lors du premier appel ,la ligne du père vaut 0
	global $ligne_parent;
	if(!isset($ligne_parent)){
		$ligne_parent = 0;
	}
	// lors du premier appel ,la ligne actuelle vaut 1
	global $ligne;
	if(!isset($ligne)){
		$ligne = 1;
	}
	
	$old_parent = $ligne_parent;
	
	if(count($tab) > 0){
		foreach($tab as $value){
			if(!is_null($value[3])){
				if($lvl == 0){ // on affiche seulement la racine de l'arborescence
					echo "<tr id=\"".$ligne_parent."-".$ligne."\" onmouseover=\"this.className='over';\" onmouseout=\"this.className='';\">\n";
				}else{
					echo "<tr id=\"".$ligne_parent."-".$ligne."\" style=\"display: none;\" onmouseover=\"this.className='over';\" onmouseout=\"this.className='';\">\n";
				}
				echo "<td class=\"texte\" style=\"padding-left: ".(($lvl*15)+3)."px\"><img id=\"indic_".$ligne."\" src=\"images/plus2.gif\" alt=\"\" style=\"cursor: pointer;\" onclick=\"ouvrirFermerArbo('lst_airesgeo', ".$ligne.", null);\" /> ".htmlentities($value[2], ENT_NOQUOTES, "UTF-8")."</td>\n";
				echo "<td class=\"icone\">";
				if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					echo " <a href=\"index.php?p=gestion/airegeographiques_edite&amp;id=".$value[0]."\"><img src=\"images/editer.gif\" title=\"Editer les informations\" alt=\"Editer\" /></a>";
				}
				if($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de supprimer
					echo " <a href=\"index.php?p=gestion/airegeographiques_supprime&amp;id=".$value[0]."\" onclick=\"return confirm('Etes-vous sûr de vouloir supprimer cette aire géographique ?');\"><img src=\"images/supprimer.gif\" title=\"Supprimer l'entrée\" alt=\"Supprimer\" /></a>";
				}
				echo "</td>\n";
				echo "</tr>\n";
				$ligne_parent = $ligne;
				$ligne++;
				afficherListe($value[3], $lvl+1);
				$ligne_parent = $old_parent;
			}else{
				if($lvl == 0){ // on affiche seulement la racine de l'arborescence
					echo "<tr id=\"".$ligne_parent."-".$ligne."\" onmouseover=\"this.className='over';\" onmouseout=\"this.className='';\">\n";
				}else{
					echo "<tr id=\"".$ligne_parent."-".$ligne."\" style=\"display: none;\" onmouseover=\"this.className='over';\" onmouseout=\"this.className='';\">\n";
				}
				echo "<td class=\"texte\" style=\"padding-left: ".(($lvl*20)+3)."px\">".htmlentities($value[2], ENT_NOQUOTES, "UTF-8")."</td>\n";
				echo "<td class=\"icone\">";
				if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					echo " <a href=\"index.php?p=gestion/airegeographiques_edite&amp;id=".$value[0]."\"><img src=\"images/editer.gif\" title=\"Editer les informations\" alt=\"Editer\" /></a>";
				}
				if($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de supprimer
					echo " <a href=\"index.php?p=gestion/airegeographiques_supprime&amp;id=".$value[0]."\" onclick=\"return confirm('Etes-vous sûr de vouloir supprimer cette aire géographique ?');\"><img src=\"images/supprimer.gif\" title=\"Supprimer l'entrée\" alt=\"Supprimer\" /></a>";
				}
				echo "</td>\n";
				echo "</tr>\n";
				$ligne++;
			}
		}
		unset($value);
	}else{
		echo "<tr><td colspan=\"2\" class=\"vide\">Aucune aire géographique</td></tr>";
	}
	
}

// on créé la fonction permettant de tester si une aire est sous-aire de l'aire indiquée
function estSousAire($aire, $sousAire, $tab, $rechSS=false){

	if(count($tab) > 0){
		foreach($tab as $value){
			if(!$rechSS){
				if($value[0] == $sousAire){
					return false;
				}else if($value[0] == $aire){
					if(!is_null($value[3])){
						if(estSousAire($aire, $sousAire, $value[3], true)){
							return true;
						}
					}
				}else{
					if(!is_null($value[3])){
						if(estSousAire($aire, $sousAire, $value[3])){
							return true;
						}
					}
				}
			}else{
				if($value[0] == $sousAire){
					return true;
				}else{
					if(!is_null($value[3])){
						if(estSousAire($aire, $sousAire, $value[3], true)){
							return true;
						}
					}
				}
			}
		}
		unset($value);
	}
	
	return false;
	
}

?>
<?php
//------------------------------------------------------------ Récupération de la liste des aires géographiques
	
	// récupération d'un tableau contenant les aires géographiques
	$lst_airesgeo = recSQLRequest_1n(null, "CODEAIREGEOGRAPHIQUE", "AIR_CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion);
	
?>
<?php
//------------------------------------------------------------ Traitement des options

	$optionsSet = false;
	
	if(isset($_POST['opt_aireOrig']) || isset($_GET['opt_aireDest'])){
		$optionsSet = true;
		if(numericInt($_POST['opt_aireOrig']) && numericInt($_POST['opt_aireDest'])){
			if($_POST['opt_aireOrig'] != $_POST['opt_aireDest']){
				if(!estSousAire($_POST['opt_aireOrig'], $_POST['opt_aireDest'], $lst_airesgeo)){
					if(valueExists((int)$_POST['opt_aireOrig'], "CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion) == 1 && valueExists((int)$_POST['opt_aireDest'], "CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion) == 1){
						$query_deplacer_airegeo = "UPDATE aire_geographique SET AIR_CODEAIREGEOGRAPHIQUE = ".$_POST['opt_aireDest']." WHERE AIR_CODEAIREGEOGRAPHIQUE = ".$_POST['opt_aireOrig'];
						$result_deplacer_airegeo = mysql_query($query_deplacer_airegeo, $connexion) or logError("DEPLACEMENT AIRE GEOGRAPHIQUE-".$query_deplacer_airegeo."-".mysql_error());
						if($result_deplacer_airegeo === true){
							afficherStatut("Les sous-aires ont été déplacées", 1);
							$lst_airesgeo = recSQLRequest_1n(null, "CODEAIREGEOGRAPHIQUE", "AIR_CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion);
						}else{
							afficherStatut("Erreur critique lors du déplacement des sous-aires", 3);
						}
					}else{
						afficherStatut("Une des aires indiquée n'existe pas", 3);
					}
				}else{
					afficherStatut("Impossible de déplacer les sous-aires d'une aire vers une sous-aire", 3);
				}
			}else{
				afficherStatut("L'aire de destination ne doit pas être d'aire d'origine", 3);
			}
		}else{
			afficherStatut("Une des aires est mal indiquée", 3);
		}
	}
	
?>
<a name="liste"></a>
<h2>Liste des aires géographiques</h2>
<div style="width: 650px; margin: auto;">
<p class="colonne2">
   		<img src="images/ajouter.gif" alt="+" /> <a href="index.php?p=gestion/airegeographiques_ajoute">Ajouter</a>
   	</p>
<div style="clear: both;">
	<table id="lst_airesgeo" class="liste" style="margin: auto; width: 100%;">
		<tr>
			<th>Aire géographique</th>
			<th style="width: 75px;"><span style="font-weight: normal; font-style: italic;">Actions</span></th>
		</tr>
		<?php afficherListe($lst_airesgeo); ?>
	</table>
</div>
<div class="options" style="margin-left: auto; margin-right: auto; width: 604px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form method="post" action="index.php?p=gestion/airegeographiques_gere">
			Déplacer les sous-aires :<br />
			<label>de</label>
			<select name="opt_aireOrig">
				<?php afficherOptions($lst_airesgeo); ?>
			</select>
			<label>vers</label>
			<select name="opt_aireDest">
				<?php afficherOptions($lst_airesgeo); ?>
			</select>
			<input type="submit" value="ok" />
		</form>
	</div>
</div>
</div>
<br />
<div class="information">
	<div class="titre">Information</div>
	<h4>Suppression :</h4>
	<p>
		Si vous supprimez une aire géographique, ses sous-aires seront liées à son aire supérieure.<br />
		Si il n'y a pas d'aire supérieure (l'aire à supprimer est racine), la suppression sera impossible tant qu'il y aura des sous-aires
	</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>